package models

// 通用响应结构
type Response struct {
	ErrCode  int         `json:"errCode"`
	ErrMsg   string      `json:"errMsg"`
	Data     interface{} `json:"data"`
	Total    *int        `json:"total,omitempty"`
	TimeCost int64       `json:"timeCost"`
}

// 首页海报
type HomeBanner struct {
	ID        string `json:"_id" db:"id"`
	Sort      int    `json:"sort" db:"sort"`
	Target    string `json:"target" db:"target"`
	PicURL    string `json:"picurl" db:"picurl"`
	URL       string `json:"url" db:"url"`
	AppID     string `json:"appid" db:"appid"`
	CreateTime int64 `json:"-" db:"create_time"`
	UpdateTime int64 `json:"-" db:"update_time"`
}

// 壁纸分类
type WallpaperClassify struct {
	ID         string `json:"_id" db:"id"`
	Name       string `json:"name" db:"name"`
	Sort       int    `json:"sort" db:"sort"`
	PicURL     string `json:"picurl" db:"picurl"`
	Select     bool   `json:"select" db:"is_select"`
	UpdateTime int64  `json:"updateTime" db:"update_time"`
	CreateTime int64  `json:"-" db:"create_time"`
}

// 壁纸
type Wallpaper struct {
	ID          string   `json:"_id" db:"id"`
	ClassID     string   `json:"classid" db:"classid"`
	ClassName   string   `json:"classname,omitempty" db:"classname"`
	Description string   `json:"description" db:"description"`
	SmallPicURL string   `json:"smallPicurl" db:"small_picurl"`
	Tabs        []string `json:"tabs"`
	Score       string   `json:"score" db:"score"`
	UserScore   string   `json:"userScore,omitempty" db:"user_score"`
	Nickname    string   `json:"nickname" db:"nickname"`
	ViewCount   int      `json:"view_count,omitempty" db:"view_count"`
	CreateTime  int64    `json:"createTime,omitempty" db:"create_time"`
}

// 用户评分
type UserScore struct {
	ID        string  `json:"id" db:"id"`
	AccessKey string  `json:"-" db:"access_key"`
	WallpaperID string `json:"-" db:"wallpaper_id"`
	ClassID   string  `json:"-" db:"classid"`
	UserScore string  `json:"userScore" db:"user_score"`
	CreateTime int64  `json:"createTime" db:"create_time"`
}

// 用户下载
type UserDownload struct {
	ID         string `json:"id" db:"id"`
	AccessKey  string `json:"-" db:"access_key"`
	WallpaperID string `json:"-" db:"wallpaper_id"`
	ClassID    string `json:"-" db:"classid"`
	CreateTime int64  `json:"createTime" db:"create_time"`
}

// 用户信息
type UserInfo struct {
	IP           string      `json:"IP"`
	Address      AddressInfo `json:"address"`
	DownloadSize int         `json:"downloadSize"`
	ScoreSize    int         `json:"scoreSize"`
}

type AddressInfo struct {
	Country  string `json:"country"`
	Province string `json:"province"`
	City     string `json:"city"`
}

// 壁纸资讯
type WallNews struct {
	ID           string `json:"_id" db:"id"`
	ViewCount    int    `json:"view_count" db:"view_count"`
	PublishDate  int64  `json:"publish_date" db:"publish_date"`
	Title        string `json:"title" db:"title"`
	Author       string `json:"author" db:"author"`
	Content      string `json:"content,omitempty" db:"content"`
	ArticleStatus int   `json:"article_status,omitempty" db:"article_status"`
	Select       bool   `json:"select" db:"is_select"`
}

// 推荐专题
type Subject struct {
	ID          string           `json:"_id" db:"id"`
	Theme       string           `json:"theme" db:"theme"`
	Description string           `json:"description,omitempty" db:"description"`
	Day         string           `json:"day" db:"day"`
	ViewCount   int              `json:"view_count" db:"view_count"`
	Size        int              `json:"size" db:"size"`
	Type        int              `json:"type,omitempty" db:"type"`
	UserID      string           `json:"user_id,omitempty" db:"user_id"`
	Checked     bool             `json:"checked,omitempty" db:"checked"`
	CreateTime  int64            `json:"createTime,omitempty" db:"create_time"`
	PicList     []SubjectPicItem `json:"picList,omitempty"`
}

type SubjectPicItem struct {
	ID         string `json:"_id"`
	SmallPicURL string `json:"smallPicurl"`
	// 详情中可能包含的完整壁纸信息
	Score       string   `json:"score,omitempty"`
	ViewCount   int      `json:"view_count,omitempty"`
	Checked     bool     `json:"checked,omitempty"`
	Description string   `json:"description,omitempty"`
	Tabs        []string `json:"tabs,omitempty"`
	ClassName   string   `json:"classname,omitempty"`
	ClassID     string   `json:"classid,omitempty"`
	Nickname    string   `json:"nickname,omitempty"`
}

